package com.spsoft.vatoutinv.model.vo.matchflow;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.spsoft.vatoutinv.annotation.Translate;
import com.spsoft.vatoutinv.constants.DictConstant;
import com.spsoft.vatoutinv.constants.TranslateConstant;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 发票匹配流水查询页面-分页查询返回VO
 *
 * @author : chenxudong
 * @date : 2024/6/28 11:17
 */
@Data
@ApiModel(value = "发票匹配流水查询页面-分页查询返回对象")
public class VmsMatchFlowSelectVo implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @ApiModelProperty(value = "主键")
    private Long oidid;

    /**
     * 开票单位
     */
    @ApiModelProperty(value = "开票单位")
    private String kpdw;

    /**
     * 发票类型
     */
    @ApiModelProperty(value = "发票种类")
    @Translate(type = TranslateConstant.DICT, value = DictConstant.VMS_FPLX)
    private String fplx;

    /**
     * 发票代码
     */
    @ApiModelProperty(value = "发票代码")
    private String fpdm;

    /**
     * 发票号码
     */
    @ApiModelProperty(value = "发票号码")
    private String fphm;

    /**
     * 开票日期
     */
    @ApiModelProperty(value = "开票日期")
    @Translate(type = TranslateConstant.DATE)
    private Date kprq;

    /**
     * 匹配日期
     */
    @ApiModelProperty(value = "匹配日期")
    @Translate(type = TranslateConstant.DATE)
    private Date pprq;

    /**
     * 受票方名称
     */
    @ApiModelProperty(value = "受票方名称")
    private String spfmc;

    /**
     * 受票方识别号
     */
    @ApiModelProperty(value = "受票方识别号")
    private String spfsbh;

    /**
     * 受票方银行账号
     */
    @ApiModelProperty(value = "受票方银行账号")
    private String spfyhzh;

    /**
     * 受票方地址电话
     */
    @ApiModelProperty(value = "受票方地址电话")
    private String spfdzdh;

    /**
     * 备注
     */
    @ApiModelProperty(value = "开票备注")
    private String kpbz;

    /**
     * 发票状态
     */
    @ApiModelProperty(value = "发票状态")
    @Translate(type = TranslateConstant.DICT, value = DictConstant.VMS_FPZT)
    private String fpzt;

    /**
     * 开票状态
     */
    @ApiModelProperty(value = "开票状态")
    @Translate(type = TranslateConstant.DICT, value = DictConstant.VAT_0005)
    private String kpzt;

    /**
     * 发票匹配状态
     */
    @ApiModelProperty(value = "发票匹配状态")
    @Translate(type = TranslateConstant.DICT, value = DictConstant.VAT_0045)
    private String ppzt;

    /**
     * 收款人员名称
     */
    @ApiModelProperty(value = "收款人员名称")
    private String skry;

    /**
     * 复核人员名称
     */
    @ApiModelProperty(value = "复核人员名称")
    private String fhry;

    /**
     * 价税合计
     */
    @ApiModelProperty(value = "含税金额")
    @JsonSerialize(using = ToStringSerializer.class)
    private BigDecimal jshj;

    /**
     * 合计税额
     */
    @ApiModelProperty(value = "税额")
    @JsonSerialize(using = ToStringSerializer.class)
    private BigDecimal hjse;

    /**
     * 发票明细信息
     */
    @ApiModelProperty(value = "发票明细信息")
    private List<VmsMatchFlowSelectItemVo> invoiceItemList;

}